package com.jgdt.jgdtkasannong_university_gene_backend.service.base.impl;


import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jgdt.jgdtkasannong_university_gene_backend.dto.BaseImgDataDto;
import com.jgdt.jgdtkasannong_university_gene_backend.dto.BaseInfoImgDto;
import com.jgdt.jgdtkasannong_university_gene_backend.entity.base.BaseInfo;
import com.jgdt.jgdtkasannong_university_gene_backend.entity.content.Media;
import com.jgdt.jgdtkasannong_university_gene_backend.mapper.base.BaseInfoMapper;
import com.jgdt.jgdtkasannong_university_gene_backend.service.base.BaseInfoService;
import com.jgdt.jgdtkasannong_university_gene_backend.service.content.MediaService;
import com.jgdt.jgdtkasannong_university_gene_backend.vo.content.excel.base.BaseTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 基地表 服务实现类
 * </p>
 *
 * @author chenzg
 * @since 2025-04-27
 */
@Service
public class BaseInfoServiceImpl extends ServiceImpl<BaseInfoMapper,BaseInfo> implements BaseInfoService {

    @Autowired
    private BaseInfoMapper baseInfoMapper;
    @Autowired
    private MediaService mediaService;

    @Override
    public List<BaseTemplate> queryBaseInfoImg(Integer menuId) {
        List<BaseTemplate> baseTemplates=new ArrayList<>();
        if(menuId==null){
            return baseTemplates;
        }
        List<BaseInfoImgDto> baseInfoImgDtoList= baseInfoMapper.queryBaseInfoImg(menuId);
        for (BaseInfoImgDto baseInfoImgDto:baseInfoImgDtoList){
            BaseTemplate baseTemplate=new BaseTemplate();
            baseTemplate.setCode(baseInfoImgDto.getId());
            baseTemplate.setBaseName(baseInfoImgDto.getBaseName());
            baseTemplate.setImg(baseInfoImgDto.getImageUrl());
            baseTemplate.setVarietyName(baseInfoImgDto.getVarietyName());
            baseTemplate.setBaseInfo(baseInfoImgDto.getBaseInfo());
            baseTemplates.add(baseTemplate);
        }
        return baseTemplates;
    }

//    @Override
//    public List<BaseInfo> queryBaseInfo(BaseInfo baseInfo) {
//        if (ObjectUtils.isEmpty(baseInfo)) {
//            return new ArrayList<>();
//        }
//        LambdaQueryWrapper<BaseInfo> queryWrapper = new LambdaQueryWrapper<>();
//        if (baseInfo.getMenuId() != null) {
//            queryWrapper.eq(BaseInfo::getMenuId, baseInfo.getMenuId());
//        }
//        if (baseInfo.getBaseTypeId() != null) {
//            queryWrapper.eq(BaseInfo::getBaseTypeId, baseInfo.getBaseTypeId());
//        }
//        return list(queryWrapper);
//    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveOrUpdateImg(BaseImgDataDto baseImgDataDto) {
        List<BaseInfo> baseInfos = baseImgDataDto.getBaseInfos();
        List<Media> medias = baseImgDataDto.getMedias();
        //删除相关的图片信息
        if(CollectionUtil.isNotEmpty(baseImgDataDto.getDelMediaIds())){
            mediaService.deleteBatchBaseIds(baseImgDataDto.getDelMediaIds());
        }
        if (CollectionUtil.isNotEmpty(baseInfos)) {
            this.saveOrUpdateBatch(baseInfos);
        }
        if (CollectionUtil.isNotEmpty(medias)) {
            mediaService.saveUpdateById(medias);
        }
    }

    @Override
    public List<BaseInfo> queryBaseInfoByRegionid(List<Integer> regionids) {
        if (CollectionUtil.isEmpty(regionids)){
            return new ArrayList<>();
        }
        LambdaQueryWrapper<BaseInfo> queryWrapper=new LambdaQueryWrapper<>();
        queryWrapper.in(BaseInfo::getRegionid,regionids);
        return list(queryWrapper);
    }
}
